<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        变量
        var:可以重复申明,作用域:函数级
        let:不可重复声明,作用域:块级, 可以重复赋值
        const:不可重复申明，作用域：块级，定义常量不可以变   代码块:{}
        */
      var a;
      let b;
      const C_HY = "hy";

      /*
        解构赋值
        1.两边结构相同；
        json解构赋值必须名字相同
        2.右边必须是个东西
        */
      let json = { name: "hy", age: 18 };
      let { name, age } = json;
      console.log(name, age);

      let [x, y, z] = [1, 2, 3];
      console.log(x, y, z);

      /*
      箭头函数
      1.有且仅有一个参数时省略括号；
      2.有且仅有一个return语句时可以直接写
      3.不会改变this指向，继承父级this
      */
      let arr = [12, 50, 6, 8, 19];
      arr.sort((a, b) => a - b);
      console.log(arr);

      /*
     1.参数展开，集合
     2.数组展开
     3.对象展开
     */
      function show(a, b, ...c) {
        console.log(a, b, c);
      }
      show(12, 23, 1, 5, 6, 4, 8, 6, 6);

      let arr1 = [1, 2, 3];
      let arr2 = [4, 5, 6];
      let arr3 = [...arr1, ...arr2];
      console.log(arr3);

      let json1 = {
        a: 1,
        b: 2,
        c: 10,
      };
      console.log({ ...json1, d: 100 });

      /*
      Arry补充函数

      map：映射
      filter:过滤 return true保留 flase 舍弃
      reduce：(function(tmp,item,index){}) N=>1 
      */
      let arr4 = [50, 60, 90, 70, 60];
      //map
      arr = arr4.map((item) => (item > 60 ? "及格" : "不及格"));
      //reduce
      let result = arr4.reduce(function (tmp, item, index) {
        if ((index = arr4.length - 1)) {
          return (tmp + item) / arr4.length;
        } else {
          return tmp + item;
        }
      });
      //fliter
      let arr5 = arr4.filter(item =>item%2 == 0)
      //forEach
      arr4.forEach((item,index)=>{
          console.log('forEach结果')
          console.log(`第${index}个是${item}`)
      })
      console.log('原数组:'+arr4);
      console.log('map结果:'+arr);
      console.log('reduce结果:'+result);
      console.log('filter结果:'+arr5)

      /*
      模块字符串
      `${参数名}`
      */
    </script>
  </body>
</html>
